package set_;

import java.util.HashSet;
import java.util.Set;

public class HashSet_ {
    public static void main(String[] args) {
        /**
         * HashSet的底层实现其实是HashMap
         * //todo 调用的是HashMap的构造器
         *      public HashSet() {
         *         map = new HashMap<>();
         *     }
         * 可以放入null值，但是只能存放一个空值，元素不能重复
         *
         */
        //案例1
        HashSet set=new HashSet();
        set.add(null);
        set.add(null);
        set.add("");
        set.add("");
        set.add('a');
        set.add('a');
        /**
         * [null, , a]
         * [null, , a]
         */
        System.out.println(set);
        System.out.println(set);

        //案例2
        set=new HashSet();
        set.add(new Person("黎旭"));//T
        set.add(new Person("黎旭"));//T
        System.out.println(set);
        System.out.println(set);//[Person{name='黎旭'}, Person{name='黎旭'}]

        //案例3
        //为什么这里添加第二次添加String不成功呢？
        set=new HashSet();
        set.add(new String("lx"));//T
        set.add(new String("lx"));//F
        System.out.println(set);//[lx]

        //HashMap底层是数组+链表+红黑树
    }
}
class Person {
    private String name;

    public Person(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                '}';
    }
}
